val parse_of_file : string -> Maptypes.bopmop_ast option
val multi_parse : string -> Maptypes.bopmop_ast
module CharOrder : sig type t = char val compare : t -> t -> int end
module CharMap :
  sig
    type key = CharOrder.t
    type 'a t = 'a Map.Make(CharOrder).t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val find : key -> 'a t -> 'a
    val remove : key -> 'a t -> 'a t
    val mem : key -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
  end
module StringOrder : sig type t = string val compare : t -> t -> int end
module StringMap :
  sig
    type key = StringOrder.t
    type 'a t = 'a Map.Make(StringOrder).t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val find : key -> 'a t -> 'a
    val remove : key -> 'a t -> 'a t
    val mem : key -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
  end
type 'a map_struct = 'a option * 'a option * 'a map_tree
and 'a map_tree = Nil | Tree of 'a map_struct CharMap.t
type string_pref = Complet | Prefixe
val char_list_of_string : string -> char list
val string_pref_of_string : string -> string_pref * string
module type MapItemType =
  sig
    type t
    val make : Maptypes.matching_item list -> t
    val map : t -> bool array -> string
  end
module type MapStructType =
  sig
    type item
    type t
    val empty : t
    val make_item : Maptypes.matching_item list -> item
    val add : string -> string -> item -> t -> t
    val map : t -> string -> string -> bool array -> string
  end
exception Redefinition of string * string
module MapStructMake :
  functor (Item : MapItemType) ->
    sig
      type item = Item.t
      type t
      val empty : t
      val make_item : Maptypes.matching_item list -> item
      val add : string -> string -> item -> t -> t
      val map : t -> string -> string -> bool array -> string
    end
module MapItem :
  sig
    type elt = (Maptypes.pattern * string * int list) * bool array
    type t = elt list
    val partial_subset : 'a option array -> 'a option array -> bool
    val make :
      (int * (Maptypes.pattern * string * int list)) list ->
      ((Maptypes.pattern * string * int list) * bool array) list
    val map :
      ((Maptypes.pattern * string * int list) * bool array) list ->
      bool array -> string
  end
module MapStruct :
  sig
    type item = MapItem.t
    type t = MapStructMake(MapItem).t
    val empty : t
    val make_item : Maptypes.matching_item list -> item
    val add : string -> string -> item -> t -> t
    val map : t -> string -> string -> bool array -> string
  end
